package com.travel.utils;

import org.apache.commons.codec.digest.DigestUtils;


import java.util.Map;
import java.util.TreeMap;

public class SignUtils {

    /**
     * 生成支付签名
     * @param data 需要签名的参数
     * @param key 商户密钥
     * @return 签名
     * @throws Exception
     */
    public static String generatePaySign(Map<String, String> data, String key) throws Exception {
        // 使用 TreeMap 自动按字典顺序排序
        Map<String, String> sortedMap = new TreeMap<>(data);
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
            if (entry.getValue() != null && entry.getValue().trim().length() > 0) {
                sb.append(entry.getKey()).append("=").append(entry.getValue().trim()).append("&");
            }
        }
        sb.append("key=").append(key); // 将密钥添加到字符串末尾
        return DigestUtils.md5Hex(sb.toString()).toUpperCase(); // 生成MD5签名并转换为大写
    }
}
